﻿//Inclui as bibliotecas do EXT JS 4.1
Ext.require([
    'Ext.grid.*',
    'Ext.data.*',
    'Ext.tab.*',
    'Ext.window.*',
    'Ext.tip.*',
    'Ext.layout.container.Border'
    ]);

//Método executado quando a página é
//carregada

Ext.onReady(function () {

    Ext.QuickTips.init();
    //Função para validar o login
    function Login() {
        //Verifica se o formulário DOM é valido
        if (formLogin.getForm().isValid()) {
            //Recupera o evento submit do formulário
            var obj = Ext.create('LoginRequest',formLogin.getForm().getValues());

            obj.save({
                
                waitTitle: 'Efetuando Login',
                waitMsg: 'Autenticando usuário...',

                success: function () {
                    formLogin.getForm().reset();
                    var redirectLink = '/Home/Index';
                    window.location = redirectLink;
                },
                failure: function (form, action) {
                    if (action.failureType === 'server') {
                        obj = Ext.decode(action.response.responseText);

                        Ext.Msg.show({
                            title: 'Falha na autenticação!',
                            msg: obj.errors.reason,
                            buttons: Ext.Msg.OK,
                            icon: Ext.MessageBox.ERROR,
                            scope: this,
                            width: 150
                        });
                    }
                    else {
                        Ext.Msg.alert('Atenção:', 'Não foi possível autenticar no sistema!');
                    }
                    formLogin.getForm().reset();
                }

            });
        }

    }
    //Define uma nova model
    //para facilitar a manipulação dos dados 
    //via JSON
    Ext.define('LoginRequest', {
        extend: 'Ext.data.Model',
        fields: [
        { name: 'Username', type: 'string' },
        { name: 'Password', type: 'string' }
    ],
        proxy: {
            type: 'rest',
            url: '/Login/AuthUser/Index'
        }
    });
    //Define o formulário de Login
    //var formLogin é a variável que contém
    //todas as definições do panel do login
    var formLogin = Ext.create('Ext.form.Panel', {
        frame: true,
        title: 'Login',
        width: 400,
        bodyPadding: 7,
        frame: true,
        monitorValid: true,

        //define o padrão de layout para os campos
        fieldDefaults: {
            labelAlign: 'left',
            labelWidth: 70,
            anchor: '86%'
        },

        items: [{
            xtype: 'textfield',
            name: 'Username',
            fieldLabel: 'Nome',
            blankText: 'Preencha com o seu usuário',
            allowBlank: false
        }, {
            xtype: 'textfield',
            inputType: 'password',
            name: 'Password',
            fieldLabel: 'Senha',
            blankText: 'Preencha com o sua senha',
            allowBlank: false
        }],
        buttons: [{
            text: 'Login',
            formBind: true,
            handler: Login
        }]
    });


    formLogin.render(Ext.get('grid-login'));
});